package lkx.demo.test4;

/**
 *
 * 测试运算符的使用4：逻辑运算符
 *
 * 1.  & &&  |  ||  ! ^
 * 2. 说明：
 * ① 逻辑运算符针对的都是boolean类型的变量进行的操作
 * ② 逻辑运算符运算的结果也是boolean类型。
 * ③ 逻辑运算符常使用条件判断结构、循环结构中
 *
 * @author kunxianli
 * @date 2024/01/09 15:47
 **/
public class TestLogic {

    public static void main(String[] args) {
//逻辑运算符针对的都是boolean类型的变量进行的操作
        boolean a = true;
        boolean b = true;
        System.out.println(a^b);

//        & &&
	/*
		区分：& 和 &&

		1、相同点：两个符号表达的都是"且"的关系。只有当符号左右两边的类型值均为true时，结果才为true。

		2、执行过程：
			1）如果符号左边是true，则& 、&& 都会执行符号右边的操作
			2）如果符号左边是false，则 & 会继续执行符号右边的操作
			                           && 不会执行符号右边的操作
		3、开发中，我们推荐使用&&
		*/

        boolean c1 = false;
        int d1 = 1;
        System.out.println(c1 && (d1++ > 1));
        System.out.println(d1); // 1   说明 (d1++ > 1) 未运行

        System.out.println(c1 & (d1++ > 1));
        System.out.println(d1); //2  说明 (d1++ > 1) 运行了


        /*
		区分：| 和 ||

		1、相同点：两个符号表达的都是"或"的关系。只要符号两边存在true的情况，结果就为true.

		2、执行过程：
			1）如果符号左边是false，则| 、|| 都会执行符号右边的操作
			2）如果符号左边是true，则 | 会继续执行符号右边的操作
			                          || 不会执行符号右边的操作
		3、开发中，我们推荐使用||
		*/


        boolean e1 = true;
        int f1 = 1;
        System.out.println(e1 || (f1++ > 1));
        System.out.println(f1); // 1   说明 (f1++ > 1) 未运行

        System.out.println(e1 | (f1++ > 1));
        System.out.println(f1); //2  说明 (f1++ > 1) 运行了


    }
}
